Shell读取用户输入【以及循环读取验证和while循环中添加多个条件[ .. ] &&或者

您所在的位置:网站首页 shell while 循环 Shell读取用户输入【以及循环读取验证和while循环中添加多个条件[ .. ] &&或者

Shell读取用户输入【以及循环读取验证和while循环中添加多个条件[ .. ] &&或者

2023-11-29 03:47| 来源: 网络整理| 查看: 265

文章来源:http://blog.csdn.net/zilong00007/article/details/6681090

14.2  读取用户输入

14.2.1  变量

上一章我们谈到如何定义或取消变量,变量可被设置为当前shell的局部变量,或是环境变量。如果您的shell脚本不需要调用其他脚本,其中的变量通常设置为脚本内的局部变量(参见第13.10节“变量”)。

要获取变量的值,在美元符后跟变量名即可。shell会对双引号内的美元符后的变量执行变量扩展,单引号中的美元符则不会被执行变量扩展。

范例14-3

1   name="John Doe" or declare name="John Doe"   # local variable

2   export NAME="John Doe"    # global variable

3   echo "$name" "$NAME"      # extract the value

14.2.2  read命令

read命令是一个内置命令,用于从终端或文件读取输入(参见表14-1)。read命令读取一个输入行,直至遇到换行符。行尾的换行符在读入时将被转换成一个空字符。如果read命令后未跟变量名,读入的行将被赋给内置变量REPLY。也可以用read命令来中断程序的运行,直至用户输入一个回车键。要知道如何有效地使用read命令从文件读取输入行,请参见14.6节的“循环控制命令”。如果带-r选项,read命令将忽略反斜杠/换行符对,而把反斜杠作为行的一部分。read命令有4个控制选项:-a,-e,-p,-r②。

表14-1 read命令

格    式

含    义

read answer

从标准输入读取一行并赋值给变量answer

read first last

从标准输入读取一行,直至遇到第一个空白符或换行符。把用户键入的第一个词存到变量first中,把该行的剩余部分保存到变量last中

read

标准输入读取一行并赋值给内置变量REPLY

read –a arrayname

读入一组词,依次赋值给数组arrayname③

                                        (续表)  

格    式

含    义

read -e

在交互式shell命令行中启用编辑器。例如,如果编辑器是vi,则可以在输入行时使用vi命令③

read –p prompt

打印提示符,等待输入,并将输入赋值给REPLY变量③

read –r line

允许输入包含反斜杠③

范例14-4

(脚本)

      #!/bin/bash

      # Scriptname: nosy

      echo -e "Are you happy? \c"

  1   read answer

      echo "$answer is the right response."

      echo -e "What is your full name? \c"

  2   read first middle last

      echo "Hello  $first"

      echo –n "Where do you work? "

  3   read

  4   echo I guess $REPLY keeps you busy!

  -------------------------------------------------------④

  5   read -p "Enter your job title: "

  6   echo "I thought you might be an $REPLY."

  7   echo -n "Who are your best friends? "

  8   read -a friends

  9   echo "Say hi to ${friends[2]}."

  -------------------------------------------------------

(输出)

      $ nosy

      Are you happy? Yes

  1   Yes is the right response.

  2   What is your full name? Jon Jake Jones

      Hello Jon

  3   Where do you work? the Chico Nut Factory

  4   I guess the Chico Nut Factory keeps you busy!

  5   Enter your job title: Accountant

  6   I thought you might be an Accountant.

7,8   Who are your best friends?  Melvin Tim Ernesto

  9   Say hi to Ernesto.

说明

1. read命令接收一行用户输入,将其值赋给变量answer。

2. read命令从用户处接收输入,将输入的第一个词赋给变量first,将第二个词赋给变量middle,然后将直到行尾的所有剩余单词都赋给变量last。

3. 从标准输入读取一行,赋值给内置变量REPLY。

4. 显示变量REPLY的值。

5. 带-p选项的read命令,显示提示“Enter your job title:”,把输入行赋值给特定内置变量REPLY。

6. 在字符串中显示变量REPLY的值。

7. 请求用户输入。

8. 带-a选项的read命令将输入当作一组词组成的数组,数组名为friends,读入数组的元素是Melvin、Tim和Ernesto。

9. 显示friends数组的第3个元素。数组下标从0开始。

Linux的shell编程如何在while里增加多个条件【百度知道】 while ( [ "$a" = "a" ] || [ "$a" = "b" ] ) do done 注意方括号和圆括号和 等号 两边的 空格。

例如:直到输入字符串是yes或者no的时候,才跳出循环

read a  while [ $a != 'yes' ] && [  $a != 'no' ]  do      read a  done echo $a

或者

while [ $REPLY != 'yes' ] && [  $REPLY != 'no' ]  do      read -p "Enter your job title: "

       done echo  $REPLY

ls /root &>>aa.txt && echo 'cg' || {  echo 'sb';echo 'fdafda' ; #echo -e "\033[0;32msomething here \033[0m"  read -p "Enter your job title: "  while [ $REPLY != 'yes' ] && [  $REPLY != 'no' ]  do      read -p "Enter your job title: "  done; echo $REPLY;}#最后必须有分号否则会报错,自己试试吧!

===========================================================

ls /root &>>aa.txt && echo 'cg' || {  echo 'sb';echo 'fdafda' ; read -p "Enter your job title: "  while [ $REPLY != 'yes' ] && [  $REPLY != 'no' ]  do      read -p "Enter your job title: "  done; [ $REPLY == 'no' ]&& ( echo 'shell will exit!!!'; exit 32)}#这个最后就不需要分号";" echo 'ok.go'



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3